﻿//file: slidewidget.h

#ifndef SLIDEWIDGET_H
#define SLIDEWIDGET_H

#include <QWidget>
#include <QScrollArea>
#include <QScroller>
#include <QHBoxLayout>
#include <QResizeEvent>
#include <QPropertyAnimation>
#include <QVector>
/**
 * @brief 用于滑动界面管理，可以利用 AddPage() 添加需要实现滑动效果的界面.
 */
class SlideWidget : public QWidget
{
    Q_OBJECT
public:
    explicit SlideWidget(QWidget *parent = nullptr); //构造函数
    ~SlideWidget();
    void AddPage(QWidget *newPage);                  //增加一个滚动页面

protected:
    void resizeEvent(QResizeEvent *event) override;   //控件大小改变事件

private:
    QScrollArea *scrollArea;        //
    QScroller *scroller;            //滚动对象
    QWidget *mainWidget;            //主界面区，所以需要滑动的控件都布局到 mainWidget 中
    QHBoxLayout *hBoxLayout;        //水平布局
    int pageCount;                  //mainWidget 包含的页数
    QPropertyAnimation *animation;  //滚动条滚动动画
    QVector<QWidget *> widgetList;  //用于管理所有加入的控件
signals:

public slots:
    void StateChangedSlot(QScroller::State newState);   //用于处理滚屏对象状态的改变

};

#endif // SLIDEWIDGET_H
